# 作者: 陈其志 
# 2025年02月18日13时07分57秒 
# 2716847110@qq.com

# 赋值相当于挂标签到别的数据上了
def change(num):
    """
    整形是不可变类型，函数内无法改变函数外某个整型变量的值，修改值相当于重新为其在数据区赋值，故id改变
    :param num:
    :return:
    """
    print(f"函数内修改前num的id：{id(num)}")
    num = 5
    print(f"函数内修改后num的id：{id(num)}")  # id变化，因为int是不可变类型，所以这里是a重新赋值了一个5给a，在数据区给5分配了新地址，并引用


def change_list(new_list):
    """
    列表是可变数据类型，允许在数据区对列表进行修改而不改变其id
    :return:
    """
    print(f"函数内列表修改前的new_list{new_list}的id：{id(new_list)}")
    new_list[0] = 5  # 修改的是对应数据空间中的数据
    print(f"函数内列表修改后的new_list{new_list}的id：{id(new_list)}")


if __name__ == '__main__':
    a = 10
    print(f"函数外a的id为：id = {id(a)}")
    change(a)  # 传递a的地址到change函数
    print('-' * 50)
    my_list = [1, 2, 3]
    print(f"函数外my_list的id为：id = {id(a)}")
    change_list(my_list)
